<?php
// 引入Parsedown类库
require 'Parsedown.php';

// 创建Parsedown实例
$Parsedown = new Parsedown();

// 函数：解析Markdown文件并添加时间信息
function postParseMarkdown($filePath) {
    global $Parsedown;
    
    // 检查文件是否存在
    if (!file_exists($filePath)) {
        return null;
    }

    // 读取文件内容
    $content = file_get_contents($filePath);

    // 使用Parsedown解析Markdown内容为HTML
    return $Parsedown->text($content);
}

// 函数：获取Markdown前150字作为描述
function postDescription($content) {
    // 去除HTML标签并截取前150个字符
    $plainText = strip_tags($content);
    return mb_substr($plainText, 0, 150);
}

// 函数：获取文件创建时间
function postTime($filePath) {
    return date("Y-m-d H:i:s", filectime($filePath));
}

// 函数：获取文件最后修改时间
function postTimeChange($filePath) {
    return date("Y-m-d H:i:s", filemtime($filePath));
}

// 定义Markdown文件目录
$dir = $mdDir;
$markdownFiles = glob($dir . '*.md');

// 对文件按照最后修改时间进行排序
usort($markdownFiles, function($a, $b) {
    return filemtime($b) - filemtime($a);
});

// 初始化变量
$postUrl = '';
$postTitle = '';
$postContent = '';
$postList = '';
$postDescription = '暂时还没描述呢~'; 
$postSearch = ''; 
$creationTime = '';
$modificationTime = '';

// 函数：生成Markdown文件列表
function postList($limit = null) {
    global $markdownFiles, $rewrite, $rewriteHtml;

    $output = array(); // 使用数组来存储输出内容
    $count = 0;

    foreach ($markdownFiles as $file) {
        if ($limit !== null && $count >= $limit) {
            break;
        }

        $filename = basename($file, '.md');
        if ($rewrite) {
            if ($rewriteHtml) {
                $postUrl = 'p/' . urlencode($filename) . '.html';
            } else {
                $postUrl = 'p/' . urlencode($filename);
            }
        } else {
            $postUrl = '?p=' . urlencode($filename);
        }

        // 使用数组来存储每个文章的信息
        $output[] = array(
            'url' => $postUrl,
            'title' => htmlspecialchars($filename)
        );

        $count++;
    }

    return $output;
}

// 函数：检索Markdown文件内容
function postSearch($query) {
    global $markdownFiles, $dir, $rewrite, $rewriteHtml;

    $output = array(); // 使用数组来存储输出内容

    foreach ($markdownFiles as $file) {
        $content = file_get_contents($file);
        $filename = basename($file, '.md');

        // 如果文件内容或文件名包含搜索词
        if (stripos($content, $query) !== false || stripos($filename, $query) !== false) {
            if ($rewrite) {
                if ($rewriteHtml) {
                    $postUrl = 'p/' . urlencode($filename) . '.html';
                } else {
                    $postUrl = 'p/' . urlencode($filename);
                }
            } else {
                $postUrl = '?p=' . urlencode($filename);
            }

            // 使用数组来存储每个文章的信息
            $output[] = array(
                'url' => $postUrl,
                'title' => htmlspecialchars($filename)
            );
        }
    }

    return $output;
}

// 判断是否有具体文章需要展示
if (isset($_GET['p'])) {
    // 获取文件名并去掉.html后缀（如果存在）
    $filename = basename($_GET['p'], '.html');
    $filePath = $dir . $filename . '.md';

    if (file_exists($filePath)) {
        // 设置搜索名称
        $postTitle = htmlspecialchars($filename);
        // 解析Markdown内容并添加时间信息
        $postContent = postParseMarkdown($filePath);
        // 生成文章描述
        $postDescription = postDescription($postContent);
        // 获取创建时间和修改时间
        $creationTime = postTime($filePath);
        $modificationTime = postTimeChange($filePath);
    } else {
        // 错误信息
        $postTitle = $errorTitle;
        $postContent = $errorContent;
        $postDescription = '这里啥都木有~';
    }
} elseif (isset($_GET['s'])) {
    // 如果存在搜索词
    $searchQuery = htmlspecialchars($_GET['s']);
    $postTitle = '搜索结果';
    $postSearch = postSearch($searchQuery);
    $postDescription = '搜索页面';
} else {
    // 设置页面标题为首页
    $postTitle = '首页';

    // 调用postList函数，限制输出数量，例如10个
    $postList = postList(); // 如果需要输出全部，调用postList()即可
    $postDescription = $siteDescription;
}
?>
